package main

import (
	"fmt"
	"reflect"
)

type JOB func(interface{})
func main()  {

	var test Tt
	var job JOB
	//test = Test{}
	test = new(Test)
	fmt.Println(test.Abs(55))

	job = func(i interface{})  {
		fmt.Println("job",i)
	}
	//fmt.Println(test.Abs2(55))

	fmt.Println(reflect.TypeOf(test))
	fmt.Println(reflect.TypeOf(test).Kind())
	fmt.Println(reflect.TypeOf(test).Name())

	fmt.Println(reflect.ValueOf(test))
	fmt.Println(reflect.ValueOf(test).Kind())
	fmt.Println(reflect.ValueOf(test).Interface())
	//fmt.Println(reflect.ValueOf(test).InterfaceData())
	//fmt.Println(reflect.ValueOf(test).NumMethod())
	//fmt.Println(reflect.ValueOf(test).Interface())

	fmt.Println("===========")

	fmt.Println(reflect.TypeOf(job))
	fmt.Println(reflect.TypeOf(job).Kind())
	fmt.Println(reflect.ValueOf(job))
}
